Multi-format bar code reader

ABSTRACT

A method and apparatus is disclosed for selectively reading a barcode, symbol, or other indicia by either scanning the barcode with a flying-spot scan, or by imaging the barcode, thereby improving reading performance by tailoring the reading method to the particular item that is being read. Both a flying-spot laser scanning front end and an imaging front end are incorporated in a single device. Data obtained by the selected reading method is decoded and output. A common decoder or separate decoders may be used to decode the data from the two front ends. A single image sensor may be shared between the flying-spot front end and the imaging front-end, with a limited readout area utilized for laser scanning. The size of the readout area may be adjusted based on detected target proximity. Selection of the reading mode may be based on criteria including manual input, the range of the target, or previous failed attempts to read the barcode using either reading method. An integrated data reader in a console configuration may include a window having a special area in the corner or elsewhere for collecting data by presentation to the imaging front-end, with the flying-spot front end, with its larger depth of field, being utilized for general scanning through the window.

CROSS REFERENCE TO RELATED APPLICATIONS

[0001] This application is a continuation-in-part of U.S. patentapplication Ser. No. 09/515,659, filed Feb. 28, 2000.

BACKGROUND OF THE INVENTION

[0002] The field of the present invention relates to optical readingsystems and, more particularly, to optical code readers capable ofreading multiple code formats that can selectively read barcodes orother symbols or indicia using either an imaging approach or aflying-spot approach. By combining these two approaches into a singlesystem, the present invention enjoys the benefits of both approaches andavoids many of their drawbacks.

[0003] Most, if not all, conventional barcode readers use one of twogeneral approaches to gathering data: either by using a flying-spotlaser scanning technique, or by using an imaging technique. Inflying-spot laser scanning systems, a beam of light is swept across atarget barcode, and the reflected and/or refracted light from the targetis detected and processed to decode the barcode. In imaging barcodereaders, an image of the barcode is typically captured using an array ofpixels (CCD or CMOS, for example), and the captured image is processedto decode the barcode. Either a one dimensional array of pixels or atwo-dimensional array of pixels can be used to capture the barcode data.In some CMOS-based imaging systems, several one dimensional arrays ofpixels oriented at different angles may be used in a crossing pattern,to provide multi-directional imaging capability.

[0004] Because both flying-spot and imaging readers have drawbacks,neither type is optimum for all situations. For example, imaging readersare best suited for situations in which the imaging head can bepositioned very close the target barcode. But if the target barcode isfurther away, an optical reader relying upon an imaging device forgathering data can have much more difficulty reading the target. Thisproblem is due, in part, to difficulties in focusing images from distanttargets onto the CCD or other imaging device, and to difficulties inilluminating a distant target using a local illumination source.

[0005] On the other hand, a drawback of handheld flying-spot laserreaders is that the scan line (i.e., the path traveled by the scanningspot across the target) must usually be aimed manually at the targetbarcode, with a relatively high degree of accuracy, for each scan. Whenall of the barcodes are oriented in the same direction, this drawback isrelatively minor. But when the barcodes being scanned are orientedrandomly (e.g., when an assortment of products are being checked out ata cashier), the scanning head must be rotated for each scan until thescan line lines up with the axis of the bar code. This randomorientation can slow down the scanning process significantly.

[0006] An advantage of flying-spot laser scanners is that they generallyhave a larger depth of field than optical readers using imaging devices.However, it is nevertheless difficult to design a flying-spot laserreader that can read well both distant targets and targets that are veryclose to the scanning device.

[0007] A further drawback of flying-spot laser scanners is that it canbe very difficult or even impossible to read two-dimensional barcodes.Two dimensional barcodes and other codes are becoming increasinglycommon, and include, for example, stacked codes (e.g., Code 16K, Code49, PDF417, micro-PDF, etc.), matrix codes (e.g., DataMatrix, Code 1,Maxicode, etc.), and RSS codes. Further, two-dimensional codes may bepresent as part of a composite code or linked code, wherein aone-dimensional barcode appears on the same label as, and indicates thepresence of, a two-dimensional barcode. Reading a two-dimensional codewith a flying-spot laser scanner is difficult or impossible because thedata is read by the flying-spot laser scanner along either a linear scanline caused by the sweeping of the outgoing laser beam, or possiblyalong several scan lines at different angular orientations, dependingupon the scanning pattern.

[0008] Accordingly, to read two-dimensional codes, symbols or otherindicia, the ability to capture an entire two-dimensional image isgenerally required. Most commonly, an imaging device is utilized togather data over a two-dimensional imaging region, and the gathered datais then processed by specialized software algorithms in an attempt toidentify features of the two-dimensional code, symbol or other indicia.While optical readers relying solely on an imaging device for gatheringdata can read two-dimensional bar codes (or in some cases bothtwo-dimensional and one-dimensional bar codes), the relatively smalldepth of field of such imaging devices, as noted above, limits theirusefulness.

[0009] There exists a need for an optical reader capable of reading bothone-dimensional and two-dimensional bar codes or symbols, that hasimproved depth of field over optical readers relying solely on animaging device to capture input data.

SUMMARY OF THE INVENTION

[0010] The present invention is directed in one aspect to methods andapparatuses for reading a barcode or other symbol, indicia, character orcombination thereof using either a flying-spot laser scanning device oran imaging device, or both, either selectively, sequentially orsimultaneously. In a preferred embodiment as described herein, anintegrated optical reader is provided, having both a flying-spot laserscanning subsystem and an imaging subsystem. Either, or both, theflying-spot laser scanning subsystem or the imaging subsystem may beutilized to read a target, thereby allowing a single integrated opticalreader to obtain the advantages and strengths of each method ofgathering data.

[0011] Embodiments of various integrated optical readers as disclosedherein may be either handheld (e.g. handheld) or fixed in nature.Particularly in handheld embodiments, various components, such as alens, a detector, and certain signal processing circuitry, may be sharedbetween the flying spot laser subsystem and the imaging subsystem. Infixed embodiments wherein a viewing window is used, the imaging deviceof the imaging subsystem may be located at a predefined area (e.g.,corner) of the viewing window, or else may be located in the center ofthe viewing window in various hardware configurations. The predefinedarea may optionally be denoted by an appropriate marking. In some fixedembodiments, multiple windows are provided, and reading is implementedthrough each window using either a flying-spot laser scanning subsystem,an imaging subsystem, or both subsystems through the same window.

[0012] Provision of both flying-spot laser scanning and imaging enablesthe reading method to be tailored to the particular type of code that isbeing read. For example, one dimensional or linear codes may be readusing the flying-spot laser subsystem, while two-dimensional codes maybe read using the imaging subsystem. In one aspect, the flying-spotlaser scanning subsystem may provide a relatively large depth of field,while the imaging subsystem may provide the capability of capturingtwo-dimensional images and thus allowing more types of codes to be read,albeit with a closer range.

BRIEF DESCRIPTION OF THE DRAWINGS

[0013]FIG. 1 is a block diagram of one embodiment of an integratedoptical reader.

[0014]FIG. 2 is a block diagram of a proximity detector for use in anintegrated optical reader as described herein.

[0015]FIGS. 3 through 7 are flow charts of various processes forselecting between reading by using a flying-spot laser scanning methodor by using an imaging method.

[0016]FIG. 8 is a diagram of an integrated optical reader illustratingthe relative fields of view of a flying-spot laser scanner and animager.

[0017]FIG. 9 is a diagram of an integrated optical reader illustratingthe relative fields of view of a multi-planar flying-spot laser scannerand an imager.

[0018]FIG. 10 is a diagram of a facet wheel with a hole for allowing animaging device located beneath the facet wheel to gather dataperiodically.

[0019]FIG. 11 is a diagram of an integrated optical reader as may beimplemented in a handheld optical reading device.

[0020]FIG. 12 is a schematic block diagram of another embodiment of anintegrated optical reader.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0021]FIG. 1 is a schematic block diagram of a preferred embodiment ofan integrated optical reader 90 capable of performing optical readingusing a flying-spot laser scanner or a pixel-based imager. Theintegrated optical reading system 90 depicted in FIG. 1 includes acontroller 300, a flying-spot front-end (or subsystem) 100, and animaging front-end (or subsystem) 200. The flying-spot front-end 100 andthe imaging front-end 200 provide output data 125, 225 to the controller300, and the controller 300 provides control signals to each of the twofront-ends 100, 200.

[0022] The controller 300 preferably comprises a microprocessor ormicro-controller (uP/uC) 310, a sufficient amount of memory to store thenecessary program code (such as program code 351 and 352, describedlater herein) and data, and appropriate glue logic. The design ofuP/uC-based controllers is generally well known in the field of imagingreaders as well as in the field of flying-spot laser scanners.Alternatively, controllers based on, for example, microprogrammedbit-slice hardware, digital signal processors, or hard-wired controllogic may be used instead of a uP/uC-based controller 300.

[0023] Reading barcodes or other symbols or indicia using a flying-spotlaser scanning method is accomplished by capturing data using theflying-spot front-end 100, and processing the captured data using thecontroller 300.

[0024] The flying-spot front-end 100 preferably includes a beam-former130, which includes a light source 131 that projects a scanning beam 150out to the target barcode or other symbol 60. Preferably, the lightsource 131 comprises a laser diode. Alternatively, other types of lightsources, such as a He—Ne laser, other types of lasers, and/or focusedbeams of non-laser light may be used instead of a laser diode.

[0025] The beam-former 130 also preferably includes a laser driver 133that controls whether the light beam 150 generated by the light source131 is on or off. Optionally, the laser driver 133 may also control thebrightness of the light beam 150. Implementation of the laser driver 133is conventional in the field of flying-spot scanners, as is the primaryinterface between the controller 300 and the remaining components of thebeam-former 130. The algorithms implemented in the controller 300 forinterfacing with the laser driver 133 are also largely conventional.

[0026] Scanning with the light beam 150 is accomplished using a beamdeflector 132, which is shown in FIG. 1 as part of the beam-former 130.Preferably, the beam deflector 132 comprises an oscillating mirrordriven by an oscillating beam dither driver (neither of which is shownin FIG. 1), which are both conventional in the field of flying-spotscanners. Movement of the oscillating mirror causes the scanning lightbeam 150 to move back and forth, and to thereby trace a line-shaped pathover the target barcodes or other target symbols or indicia. Inalternative preferred embodiments, other types of beam deflectors (suchas, for example, a rotating polygon with a plurality of mirrored facets)may be used instead of a dithering mechanism.

[0027] As the scanning beam 150 from the light source 131 sweeps acrossa target barcode (or other symbol) 60, the scanning beam 150 isreflected by the target 60. Because the “bars” of the barcode 60 havelower reflectivity than the “spaces” between the bars, the amount (orintensity) of reflected light will vary depending on whether theprojected spot of scanning beam 150 is incident upon a bar or a space.

[0028] Reflected light 170 from the target barcode 60 is collected byappropriate collection optics (which may include lenses and/orcollecting mirrors), and directed towards a photodetector such as thephotodiode 110 shown in FIG. 1. The design of the collection optics andselection of an appropriate photodetector are conventional in the fieldof flying-spot scanners. The photodiode 110 converts the variations inthe incident light level into an analog signal 115 that is an electricalrepresentation of the physical bar and space widths of the target (e.g.,bar code) 60. More generally, the photodiode 110 converts variations inincident light level into an analog signal that has features (i.e.,peaks and valleys) which correspond (in width) to the physical width ofrelatively darker and relatively lighter portions of a symbol, indiciaor bar code to be read.

[0029] The signal 115 output from the photodiode 110 is then processedby the signal processor 120. Preferably, the signal processor 120includes an amplifier 121, an edge detector 122, and a noise reductioncircuit 123, as illustrated in FIG. 1. Alternative signal processorconfigurations may also be chosen, as will be apparent to those skilledin the art in view of the descriptions herein.

[0030] In a preferred configuration of signal processor 120, theamplifier 121 amplifies the signal 115 output from the photodiode 110.Preferably, the gain of the amplifier 121 is adjusted using an automaticgain control (AGC) system, in which an output of either the amplifieritself or another component (e.g., the noise reduction circuit 105) isfed back to control the gain of the amplifier 121.

[0031] The edge detector 122 locates the edges of the amplified signaloutput from amplifier 121 using any of a variety of techniques that arewell known in the art. Suitable techniques of edge detection aredescribed, for example, in U.S. Pat. No. 5,463,211 (Arends et al.) orU.S. Pat. No. 4,000,397 (Hebert et al.), both of which are herebyincorporated by reference as if set forth fully herein. For example, theedge detector 122 may locate edges of the amplified signal output fromamplifier 121 by detecting when the second derivative of the amplifiedsignal is zero. A noise reduction circuit 123 eliminates or reducesedges in the amplified signal attributed to noise, and operates forexample, by discarding or ignoring edges detected whenever the firstderivative of the amplified signal is below a threshold value.

[0032] The resulting output signal 125 from the signal processor 120 isa digital signal that contains an edge (i.e., a low-to-high orhigh-to-low transition) corresponding to each edge (i.e., adark-to-light or light-to-dark transition) of the target barcode.Alternative output formats may also be used, depending on the selectedsignal processor configuration. For example, the output signal 125 maybe formatted in a run-length encoded or other format. The output signal125 is provided to the controller 300.

[0033] In a preferred uP/uC-based embodiment, the controller 300includes program code 351 run by the uP/uC 310 for, among other things,controlling the input of data from the flying-spot front-end 100 and fordecoding that data. Preferably, the program code 351 is stored in anonvolatile memory.

[0034] operating under control of the program code 351, the controller300 receives the digital edge data in the output signal 125 from thesignal processor 120. The controller 300 then decodes the digital edgedata to interpret the information represented by the target barcode 60that was scanned by the flying-spot front end 100. Preferably, decodingis accomplished by determining the time segments between the edgescontained in the output signal 125 from the signal processor 120. Thesetime segments correspond to the relative widths of the bars and spacesin the target barcode 60. Based on these relative widths, program code351 is used to decode the information represented in the target barcode60 in a manner well known to those skilled in the art. Design andimplementation of a program 351 for decoding edge data from aflying-spot front-end may be accomplished in any conventional manner,and is considered to be well within the purview of those skilled in theart.

[0035] In addition to reading bar codes or other symbols as indiciausing a flying-spot front end 100, a preferred integrated opticalreading system 90 is also capable of reading bar codes or other symbolsor indicia using an imaging method. Reading barcodes using the imagingmethod is preferably accomplished by capturing data using the imagingfront-end 200, and processing the captured data in the controller 300.

[0036] In a preferred embodiment, the imaging front-end 200 includes animage sensor 210, an image sensor interface 220, and an illuminationsource 230. Preferably, the image sensor 210 comprises is atwo-dimensional active pixel CMOS array, and the description thatfollows assumes that this type of image sensor is being used. The imagesensor 210 may comprise a rectangular two-dimensional array of CMOSpixels, or else may, for example, comprise several intersecting orcrossing linear arrays of CMOS pixels, oriented at different angles. Anexample of one type of active pixel CMOS array that may be used as imagesensor 210 is described in copending U.S. Pat. No. 6,155,488 which ishereby incorporated by reference as if set forth fully herein.Alternative image sensors (such as, e.g., a linear CMOS array, or a oneor two dimensional charged coupled device (CCD)) may be used instead ofa two-dimensional active pixel CMOS array, if appropriate modificationsare made to the readout circuitry and signal processing particulars, aswill be apparent to those skilled in the art in view of the disclosureherein.

[0037] When the imaging front-end 200 is being used to capture an image,the illumination source 230 is activated to illuminate the bar code,symbol or other target 60. Preferably, the illumination source 230comprises a row of light emitting diodes (LEDs). Other types ofillumination sources (including, e.g., flash strobes and incandescent orfluorescent lamps) may be used instead of LEDs. As another possiblealternative, the illumination source may be omitted altogether, and theimaging front-end 200 can rely on ambient light to illuminate the targetbarcodes. Various types of ambient light imaging systems are described,for example, in U.S. Pat. Nos. 5,770,847 and 5,814,803, both of whichare incorporated by reference as if set forth fully herein.

[0038] Light 250 from the illumination source 230 (and/or ambient light)is reflected from the target barcode 60 or other symbol or indicia anddetected by the image sensor 210. As noted, a preferred image sensor 210is constructed as an active pixel CMOS device containing atwo-dimensional array of pixels. Each pixel of the image sensor 210detects the amount of light incident at its particular location andstores an electrical charge that varies as a function of the incidentlight. After the image sensor 210 has been exposed to the light 270reflected by the target, data from all the CMOS pixels is sequentiallyread out in a selectable pattern (which may be row-by-row,column-by-column, or some other pattern). The data read out from theimage sensor 210 results in the generation of an analog video outputsignal 215.

[0039] The image sensor interface 220 conditions the analog video outputsignal 215 received from the image sensor 210 and generates an outputsignal 225 that generally identifies which regions of the imagecorrespond to light areas, and which correspond to dark areas. Eitheranalog or digital signal processing (which may include, for example,amplification and/or filtering) may be utilized in the image sensorinterface 220. Preferably, the image sensor interface 220 sets theexposure time and thresholding so that the bars or relatively darkerregions of the barcode or other target are reported as being dark, andthe spaces or relatively lighter regions between the bars or darkerregions are reported as being light, according to any of a number oftechniques well known in the art. Exposure control techniques aredescribed, for example, in copending U.S. Pat. No. 6,155,488, previouslyincorporated herein by reference. The image sensor 210 and the imagesensor 220 may be contained in the same integrated circuit.

[0040] The output signal 225 of the image sensor interface 220 maycomprise binary digital image data, with the two output statescorresponding to the dark and light regions (i.e., pixels) of the image.Alternatively, the output signal 225 may comprise gray-scale pixel data,or else may comprise run-length encoded binary data. To obtaingray-scale pixel data, the analog video output signal 215 may beconverted to digital form (represented by any suitable number of bits,depending upon accuracy requirements and component tolerances) by theimage sensor interface 220 using an analog-to-digital (A/D) converter.To obtain run-length encoded binary data, the analog video output signal215 may be edge-detected in a manner similar to the photodiode outputsignal 115 of the flying-spot front-end 100.

[0041] The output of the image sensor interface 220 is provided to thecontroller 300. Transfer of the digital image data of the image sensorinterface output signal 225 from the interface 220 to the controller 300may be accomplished by any of a number of suitable techniques. Forexample, the image sensor output signal 225 may be in the form of binaryvideo information, in which the lines of video information are sent oneat a time, sequentially, with the data from individual pixels sentsequentially within each line. Alternatively, the image sensor interface220 may load the digital image data of the image sensor interface outputsignal 225 into a memory 311, such as a dual-port or sharedrandom-access memory (RAM), which could then be accessed by thecontroller 300. As yet another alternative, the image sensor interface220 may load the digital image data of the image sensor interface outputsignal 225 into a first-in-first-out (FIFO) buffer (not shown). Otherapproaches to transferring the digital image data of the image sensorinterface output signal 225 from the interface 220 to the controller 300may also be used, as will be apparent to those skilled in the art.

[0042] In the preferred uP/uC-based embodiment, the controller 300includes program code 352 run by the uP/uC 310 for inputting data fromthe imaging front-end 200, and for decoding that data. The program code352 also controls, among other things, the illumination source 230 andthe image sensor interface 220. Preferably, the program code 352 isstored in nonvolatile memory. Optionally, the data from the imagingfront-end 200 may be pre-processed so that it will have the same formatas the data generated by the flying-spot front-end 100. When suchpre-processing is implemented, a single decoding algorithm may be usedfor decoding the data from the flying-spot front-end 100 and the datafrom the imaging front-end 200.

[0043] Operating under control of the program code 352, the controller300 receives the digital image data of the image sensor interface outputsignal 225 from the image sensor interface 220. The handling of theinputted image data depends upon the format in which it was sent. Forexample, if the image sensor interface 220 generates binary videoinformation, the controller 300 will preferably take this data and storeit in memory 311 (e.g., RAM), so that the controller 300 will haveaccess to the entirety of the pixel data necessary for decoding.

[0044] After receiving the digital image data of the image sensorinterface output signal 225, the controller 300 then decodes the imagedata to determine the information represented by the target barcode,symbol, or other indicia contained within the captured image.Preferably, decoding is accomplished by identifying which areas of theimage contain barcodes or symbols or recognizable portions thereof, andthen determining the information represented by those barcodes based onthe patterns of light and dark pixels within the identified areas.Decoding capabilities may be provided for any of a variety of differentsymbologies, including, for example, linear symbologies (e.g. UPC andcode 39), Stacked symbologies (e.g., PDF417), and matrix symbologies(e.g., data matrix and Maxicode). Design and implementation of programcode 352 for controlling the imaging front-end 200 and for decoding thecaptured image data is considered well within the purview of thoseskilled in the art.

[0045] Alternatively, as noted previously herein, instead of using atwo-dimensional CMOS imaging array, the imaging front-end 200 may use aone-dimensional CMOS imaging array (i.e., a linear array) or a linearCCD array that only images a single line of a target at a time. Such alinear imaging array may be used to build up a two dimensional image bymoving either the imaging sensor 200 or the target across the field ofview of the linear array, and capturing successive one-dimensionalscans. The resulting built-up image may be stored in a RAM, and, oncecaptured, can be processed in the same manner as the two-dimensionalimage described above. As yet another alternative, a one-dimensionalimage captured by a one-dimensional CMOS imaging array (or linear CCDarray) may be processed directly. In some circumstances, however, such atechnique might require a more precise alignment of the image sensor 210with the target barcode or other symbol or indicia as compared to thetwo-dimensional system described above.

[0046] A preferred integrated optical reader 90 incorporates both aflying-spot front-end 100 and an imaging front-end 200 into a singlesystem. In such an embodiment, the controller 300 is able to select adesired reading method, and to use the selected method to try to read atarget barcode, symbol or other indicia. Preferably, both front-ends100, 200 are housed in a single housing behind a single window 80 thatis transparent to the relevant frequencies of light. The integratedoptical reader 90 may be either employed as a fixed optical reader or asa handheld optical reader.

[0047] When it is desired to read a barcode symbol or other indicia byscanning it with a flying-spot laser, the controller 300 selects andexecutes program code 351. When program code 351 is executing, thecontroller 300 provides appropriate control signals to the flying-spotfront-end 100, receives input data from the flying-spot front-end 100,and decodes that data, as described previously herein.

[0048] When it is desired to read a barcode symbol or other indiciausing an imaging technique, the controller 300 selects and executesprogram code 352. When program code 352 is executing, the controller 300provides appropriate control signals to the imaging front-end 200,receives input data from the imaging front-end 200, and decodes thatdata, as described previously herein.

[0049] The output data 305 from the controller 300 represents theinformation or value of one or more target barcodes, symbols or otherindicia and may be provided in any desired parallel, serial or otherformat including, for example, a Centronics, RS232, or Universal SerialBus (USB) format.

[0050] In one embodiment, the output data 305 from the controller 300 isalways provided in the same format, regardless of which front-end 100,200 was used to read the target barcode or symbol. This embodiment hasthe advantage of making the particulars of the front-end processingtransparent to downstream recipients of the output information.Alternatively, if it would be advantageous for the downstream recipientsto know the data source (e.g., in a diagnostic mode), a data bit orfield indicative of the data's origin may be sent from the controller300 together with the output data 305. Alternatively, the output data305 from the controller 300 may be presented in different formatsdepending on which front-end 100, 200 was used for reading.

[0051] The decision to use either the flying-spot front-end 100 or theimaging front-end 200 in a given situation may be based on any of avariety of criteria, conditions or techniques. A relatively simpleapproach uses a two-position mechanical switch (not shown), which ispreferably mounted on the imaging/scanning head, to select the desiredfront-end. For this approach, the operator manually moves the switch toa first position when desiring to read using the imaging front-end 200,and moves the switch to a second position when desiring to read usingthe flying-spot front-end 100. An alternative mode selector, such as amomentary pushbutton switch combined with a mode-indicator display(e.g., an LED) may be used instead of a mechanical switch. The operatormay be trained to select the imaging front end 200 for nearby objects,and to select a flying-spot front end 100 for more distant objects. Theoperator may instead choose, using either of the switching techniquesreferred to above, or any other suitable switching technique involvingmanual initiation, to select the imaging front end 200 for readingtwo-dimensional barcodes, and to select the flying-spot front-end 100for reading one-dimensional barcodes.

[0052] In another embodiment, the integrated optical reader 90 initiallydefaults to one of two modes (e.g., the imaging mode) for each target,and switches to the other mode (e.g., the flying-spot mode) when theuser squeezes a trigger switch on the imaging/scanning head. Such anapproach provides an advantage over conventional flying-spot scannersbecause it enables barcodes or other symbols to be optically read evenwhen the trigger is not pressed (using the imaging mode). At the sametime, this approach provides an advantage over conventional imagingreaders because it can read barcodes or other symbols at a much greaterdistance. The trigger may also be used to activate an aiming beam whensqueezed lightly, in a manner that is conventionally known.

[0053] In yet another embodiment, the operator can switch modes of theintegrated optical reader 90 by scanning a specialized symbol which,when read and interpreted by the integrated optical reader 90, causesthe controller 300 to switch reading modes. The controller 300 maymaintain an internal mode flag (i.e., a stored data bit) in softwareindicating the current reading or operation mode, and may change themode flag, if appropriate, when the specialized symbol is read.

[0054] In yet another embodiment, a host system such as a cash registermay send the scanner a command causing a mode change. For example asystem may ordinarily use the laser scanner mode to scan normal modesitems (such as those items containing a one dimensional code) and switchto the imaging mode when requested to read a special such as an ID cardbearing a multi-dimensional code.

[0055]FIG. 5 is a flow chart illustrating one embodiment of process bywhich selection between the flying-spot front end 100 and the imagingfront end 200 may be accomplished by the controller 300. As illustratedin FIG. 5, in a first step 551, the controller 300 reads an operationmode flag. The value of the operation mode flag may be set by, forexample, a mechanical switch or trigger, as described above, or byreading a specialized symbol, as also described above. In a next step552, a test is performed to see whether the operation mode flag isenabled for flying-spot laser scanning or for imaging. Alternatively,the operation mode flag may indicate whether the integrated opticalreader is in an operation mode for reading one-dimensional symbols orfor reading two-dimensional symbols, but the effect is similar: forone-dimensional symbols, reading with the flying-spot front end 100 ispreferred, while for two-dimensional symbols, reading with the imagingfront end 200 is preferred. Thus, if the operation mode flag is selectedfor one-dimensional symbols (or, alternatively, for flying-spotscanning), then the controller 300 selects, in step 556, the flying-spotfront end 100 for reading. The data gathered by the flying-spot frontend 100 is then processed and transferred to the controller 300 fordecoding, in step 557. If, on the other hand, the operation mode flag isselected for two-dimensional symbols (or, alternatively, for imaging),then the controller 300 selects, in step 553, the imaging front end 200for reading. The data gathered by the imaging front end 200 is thenprocessed and transferred to the controller 300 for decoding, in step554.

[0056] In another embodiment, the integrated optical reader 90 attemptsto read the target barcode or other symbol or indicia using one of thetwo methods (flying-spot or imaging), and switches to the other methodif the first method fails, thus alternating between the two readingmethods. FIG. 3 is a flowchart of a control program in accordance withsuch an embodiment. The program represented by the flow chart in FIG. 3is preferably implemented by the controller 300 (shown in FIG. 1).

[0057] In accordance with the flow chart as shown in FIG. 3, thecontroller 300 starts execution at step 521. In step 522, the controller300 adjusts the parameters for the upcoming imaging read, preferablybased on previously performed imaging reads. These parameters mayinclude, for example, exposure control for the imaging process. Then, instep 523, the controller 300 attempts to read the target barcode (orother symbol or indicia) using the imaging front-end 200. This step 523may include, for example, exposure control, clocking the data out of theCCD or other image sensor, and decoding of the data from the CCD asdescribed previously herein.

[0058] Next, in step 524, a test is preformed to determine whether theattempted read (in step 523) was successful. If the attempted read wassuccessful, processing jumps to step 529, where the data correspondingto the target barcode or other symbol or indicia is reported. If, on theother hand, the attempted read in step 523 was not successful,processing passes to step 525, which is the start of the flying-spotscanning routine.

[0059] In step 525, a test is performed to determine whether the triggerswitch on the handheld head has been pressed. If the trigger switch hasnot been pressed, the system will not attempt to read the barcode orother symbol or indicia using a flying-spot scan, and control returns tostep 522 so that another attempt can be made using an imaging read. Thetest of step 525 may be included for safety reasons, to prevent, forexample, the unintentional discharge of laser light.

[0060] If the test of step 525 determines that the trigger has beenpressed, control then passes to step 526, where the controller 300adjusts the parameters for the upcoming flying-spot scan, preferablybased on previously performed flying-spot scans. These parameters mayinclude, for example, the speed of the scanning spot. Next, in step 527,the system attempts to read the target barcode using a flying-spot scan.Details of implementing this step (including, for example, reading anddecoding the edge data) have been described previously herein.

[0061] Next, in step 528, a test is performed to determine whether theattempted read (in step 527) was successful. If the attempted read wassuccessful, processing continues in step 529, where the datacorresponding to the target barcode or other symbol or indicia isreported. If, on the other hand, the attempted read in step 527 was notsuccessful, processing returns to step 522, which is the start of theimaging reading routine. This process is repeated to effectuate readingof the bar code, symbol or other indicia.

[0062] A number of variations to the program depicted in FIG. 3 will beapparent to those skilled in the art upon review of the specification,drawings and claims herein. For example, instead of switching betweenthe imaging and flying-spot reading modes after each unsuccessfulreading attempt, the system may remain in either of those modes until apredetermined number of unsuccessful reading attempts have occurred.

[0063] In another embodiment, the integrated optical reader 90alternates between reading with the flying-spot front end 100 and theimaging front end 200, and performs data capture using one readingmethod in parallel with decoding data gathered using a different readingmethod.

[0064] A flow chart depicting such an operational process is shown inFIG. 4. According to the process shown in FIG. 4, the controller 300starts execution in step 540. In step 541, the integrated optical reader90 first attempts to read with the flying-spot front end 100. The flyingspot front end 100 is selected first because the decoding time isgenerally less, although in alternative embodiments the imaging frontend 200 may be selected first. In a next step 542, the data gathered bythe flying spot front end 100 is processed and transferred to thecontroller 300 for decoding. At or around the same time, the controller300 switches the reading mode, and selects the imaging front end 200 toread in data. Thus, the integrated optical reader 90 operates inparallel, decoding data gathered from one source (the flying spot frontend 100) while gathering data from another source (the imaging front end200). After the data is gathered by the imaging front end 200, the datais processed and sent to the controller 300 for decoding, in step 544.While decoding of the data gathered by the imaging front end 200 is inprogress, the cycle may repeat, and the controller 300 may switch backto reading with the flying spot front end 100, in step 541.

[0065] An advantage of the processes shown in FIGS. 3 and 4 is that bothnear and far targets may be read, without the need for manual selectionbetween different modes. According to the process of FIGS. 3 and 4, theintegrated optical reader 90 performs automatic switching between themodes, thus reducing the need for manual intervention in its operation.

[0066] In one preferred embodiment, when using both the flying spotfront end 100 and the imaging front end 200 in an automated fashion, theoperation of the two front ends 100, 200 is synchronized so that theyare not operating simultaneously. The reason for this is because theflying spot laser beam traversing the target may interfere withcollection of good data by the imaging front end 200. Thus, simultaneousoperation of both the flying spot front end 100 and the imaging frontend 200 may degrade performance of the imaging front end 200.

[0067] In an alternative preferred embodiment, a band-stop or “notch”filter may be installed in front of the imaging sensor in the imagingfront end 200. Preferably, this notch filter rejects light withwavelengths that match the flying-spot laser, and passes most otherwavelengths of light that can be sensed by the imaging sensor. Inparticular, the notch filter should pass most of the light that is usedto provide illumination for the imaging front end. When such a notchfilter is used, the operation of the flying-spot front end 100 will notinterfere with the operation of the imaging front end 200, so both ofthose front ends can be operated simultaneously, provided thatsufficient processing power is available is the controller 300. Thisprocessing power may be provided by a single microprocessor that issufficiently powerful to handle both tasks simultaneously, or byproviding two individual processors, one for each front end.

[0068] Optionally, data from the imaging front-end 200 may be used toconfirm the validity of data obtained from the flying-spot front-end 100or vice versa. This confirmation process can be used to decrease theprobability of a reading error in cases where the barcode or othersymbol can be successfully decoded, but the confidence level in thedecoding result is low. Thus, if the flying-spot subsystem decodes agiven barcode or other symbol with a low degree of confidence, animaging read can be performed to verify the data. Then, if the imagingsub-system detects the same information for the given barcode or symbol,the original data reading can be accepted. This process is particularlyadvantageous when the data confidence is relatively low for both theimaging and flying-spot reads, but the combined confidence is highenough to be usable. For example, if the confidence in the imaging readis 90%, and the confidence in the flying-spot scan is 95%, the resultingconfidence would be 1−(0.1×0.05), or 99.5%. If the level of confidenceis sufficient, this process of confirmation can result in a successfulscan from a pair of reading attempts that would otherwise be toounreliable to use.

[0069] In various other embodiments, the integrated optical reader 90may first read using one reading method (e.g., using the flying spotfront end 100), and then switch to the other reading method based upondata derived in a partial pattern recognition step (or a partialdecoding step). In accordance with one such embodiment, the controller300 causes data to be gathered using the flying-spot front end 100. Thecontroller 300 then performs a partial pattern recognition (or partialdecoding) step to search for indicia indicative of either aone-dimensional or two-dimensional code, symbol or indicia. The partialpattern recognition (or partial decoding) step takes less time than afull decode, because the particular value or specific information of thebarcode or symbol is not needed at this stage of the processing. Ifinitial processing of the gathered data indicates that the bar code (orother symbol or indicia) is one-dimensional, based, for example, on thefeature ratios of a portion of the data, or by detecting a stripedpattern, or by detecting certain key features (such as center and/orguard bands), then the controller 300 may continue to attempt to decodeon the assumption that the target comprises a one-dimensional code,symbol or indicia, and may also instruct the flying spot front end 100to continue to gather data continuously or periodically in case completedata was not initially read.

[0070] If, on the other hand, initial processing of the gathered dataindicates that the bar code (or other symbol or indicia) istwo-dimensional, based, for example, on the feature ratios of a portionof the data, or by detecting certain key features (such as start/stopcharacters in PDF417, or a Maxicode bullseye), then the controller 300may switch to an image capture mode, and cause the imaging front end 200to capture an image for decoding. The controller 300 may either discardthe original data gathered by the flying spot front end 100, or maintainit and use it to assist decoding of the data gathered by the imagingfront end 200.

[0071] In one embodiment as described herein, an integrated opticalreader (such as integrated optical reader 90 shown in FIG. 1) includes aproximity detection capability, by which the distance from the opticalreader 90 to the target may be determined. Various proximity detectiontechniques are conventionally known, and have been utilized, forexample, in camera-related applications for performing such tasks asautomatic focusing. In various embodiments of integrated optical readersas described herein, selection between the flying-spot front end 100 andimaging front-end 200 is based, in whole or in part, on information froma proximity detector, as further described below.

[0072]FIG. 2 is a schematic block diagram of one type of proximitydetector 400 that may be used to detect whether a target is near or far.When incorporated in the integrated optical reader 90, the controller300 selects the imaging front-end 200 for near targets and theflying-spot front end 100 for far targets based on an output of theproximity detector 400. Preferably, the proximity detector 400 isintegrated into a handheld imaging/scanning head.

[0073] The illustrated proximity detector 400 makes use of the existingillumination source 230 (e.g., a forward-facing LED array) located inthe imaging front-end 200, together with an additional forward-facingphotodetector 410. Preferably, this added photodetector 410 comprises aphotodiode with a peak detecting frequency that matches the frequency ofthe light from the illumination source 230. The output of thephotodetector 410 is amplified by a transimpedance amplifier 420. Thetransimpedance amplifier's output 425 is then compared to a presetthreshold voltage by, for example, a comparator 430.

[0074] Because the illumination source 230 and the photodetector 410 areboth forward-facing, the photodetector will detect light from theillumination source 230 that has been reflected by the target 460. Whenthe target 460 is near (for example, less than one inch from the frontof the imaging/scanning head 480), the amount of reflected light will berelatively large, and the amplifier output 425 will exceed the presetthreshold. When the target is far away, on the other hand, the amount ofreflected light detected by the photodetector 410 will be smaller, andwill not exceed the preset threshold. The controller 300 then uses theoutput of the comparator 435 to decide whether to perform an imagingscan (for near targets) or a flying-spot scan (for far targets).

[0075] The proximity detector 400 may be referred to as a “near/farproximity detector” because it simply outputs an indication of whetherthe target 460 is near or far, but not necessarily the precise distanceof the target 460. However, with suitable modification (e.g., additionalthreshold levels to provide range “buckets”, or analog-to-digitalconversion of the amplifier output signal 425), a closer estimate of thedistance to the target 460 can be achieved, if desired for otherpurposes (e.g., auto-focus).

[0076]FIG. 6 is a flow chart illustrating a technique for selectingbetween flying-spot scanning and imaging when proximity information isavailable. As illustrated in FIG. 6, the controller 300 starts executionin step 560. In step 561, the range to the target 460 is measured usinga proximity detector (e.g., proximity detector 400 shown in FIG. 2). Theoutput from the proximity detector is tested step 562. If the target 460is near, then, in step 563, the controller 300 selects the imagingfront-end 200. The data gathered by the imaging front-end 200 is thenprocessed and sent for decoding in step 564. If, on the other hand, thetarget 460 is not near, then, in step 566, the controller 300 selectsthe flying-spot front end 100. The data gathered by the flying-spotfront end 100 is then processed and sent for decoding in step 567.

[0077] Should step 561 not result in a determination of target distance(i.e., the proximity detector 400 is unable to detect the target),typically the near/far proximity detector 400 will output an indicationthat the target is “far” because the target 460 will not be present toreflect light on the photodetector 410. Thus, in the absence of a targetor a definitive reading from the proximity detector, the controller 300may choose to default, or may naturally default, to using theflying-spot front end 100.

[0078] Besides the proximity detector 400 illustrated in FIG. 2, othertypes of proximity or range detectors may be used. For example, anultrasonic sonar-based proximity detector may be utilized. Anotherexample of a proximity detector is described in copending U.S. patentapplication Ser. No. 09/422,619 (attorney docket 239/290) filed on Oct.21, 1999, which application is assigned to the assignee of the presentinvention, and hereby incorporated by reference as if set forth fullyherein.

[0079] In a variation of the process shown in FIG. 6, if the proximitydetector determines that the target is not near, but the integratedoptical reader 90 fails to read the target using the flying spot frontend 100, then the controller 300 causes the integrated optical reader 90to issue an audible beep having a recognizable tone or pattern,indicating to the operator to move the target close, within the rangeand field of view of the imaging front end 200.

[0080] In another embodiment, the imaging front end 200 is selected bythe controller 300 in response to reading of a specialized linear (i.e.,one-dimensional) code indicating that a two-dimensional bar code, symbolor indicia is present. A flow chart illustrating an operational processin accordance with such an embodiment is illustrated in FIG. 7. As shownin FIG. 7, the controller 300 starts execution in step 570. In step 571,the flying-spot front end 100 is used to gather data. In the next step572, the data gathered by the flying spot front end 100 is processed andtransferred to the controller 300 for decoding. In step 573, thecontroller 300 determines whether the data is in the format of acomposite, or linked, code, indicating that a two-dimensional bar code,symbol or indicia is present. If not, then the process is done (unlessno code was detected, in which case the process may return to step 571).If, however, a composite or linked code was present, the process thencontinues with step 574, wherein the imaging front end 200 is used togather data. In step 575, the data gathered by the imaging front end 200is processed and transferred to the controller 300 for decoding.

[0081]FIG. 12 is a block diagram of an alternative embodiment of anintegrated optical reader 900 similar to the embodiment shown in FIG. 1,except that instead of transferring undecoded data 725, 825 from thefront-ends 700, 800 to the controller 950, the decoding function isperformed locally in each individual front-end 700, 800. Morespecifically, the undecoded edge data in the signal processor outputsignal 725 is decoded in a local flying-spot decoder 740 of any suitableconventional design, and the undecoded image data 825 is decoded in alocal imaging decoder 840 of any suitable conventional design. Thedecoders 740, 840 may be uP/uC-based. Both decoders 740, 840 may providetheir output in the same format (e.g., ASCII data), thus simplifying thedesign of the controller 950. When used in conjunction with a switch forselecting the desired front-end 700 or 800, as described earlier herein,the controller 950 may be implemented in hardware using a simple 2-to-1multiplexer to route the data from the desired front-end 700, 800 to theoutput. Alternatively, the controller 950 may be uP/uC-based, or maycomprise a finite state machine, field-programmable gate array (FPGA),or logic network, or may have any other hardware- or software-basedarchitecture.

[0082]FIG. 8 is a diagram of an integrated optical reader 601 embodiedas a fixed device. As illustrated in FIG. 8, the integrated opticalreader 601 includes a system enclosure 602 having a window (or aperture)603 atop it, such as may be found at, for example, a retail store or inother point-of-sale applications. The integrated optical reader 601further comprises a flying-spot laser scanner front end 605 (such asflying spot front end 100 shown in FIG. 1 and described earlier herein)as well as an imaging front end 604 (such as imaging front end 200 shownin FIG. 1 and described earlier herein), both of which are connected toa control system 606 (such as controller 300 shown in FIG. 1). Inoperation, the control system 606 selectively operates the flying spotfront end 605 and the imaging front end 604, so as to gather data overthe respective fields-of-view 609, 608 of the two front ends 605, 604.Selection between the flying spot front end 605 and the imaging frontend 604 may be made according to any of the techniques describedelsewhere herein, in connection with FIGS. 3-7, for example. Datagathered by the flying spot front end 605 and imaging front end 605 maybe decoded locally in each front end 605, 604, or else may be decoded bythe controller 626. Data gathered by, or decoded by, the control system606 may be passed along to a host computer (not shown) through aninterface 607.

[0083] While FIG. 8 depicts that the imaging field of view 608 and thelaser scanner field of view 609 are both inputted through a singleaperture or window 603, individual windows may be provided for each ofthose fields of view in alternative embodiments. In such embodiments(not shown), the imaging reader 604 would be located behind one window,and the laser scanner 605 would be located behind a second window. Whenmultiple windows are used, the windows may be located in a single plane,either adjacent to each other or located some distance apart.Alternatively, the windows may be located in two different planes,oriented to provide any desired field of view.

[0084] The imaging front end 604 may be located so that the componentsfor the imaging front end 604 are a sufficient distance away from theflying spot front end 605 that they do not interfere with the operation(e.g., generation of the scanning pattern) of the flying spot front end605. In one embodiment, a special area of the window 603, such as acorner section thereof, is designated for reading two-dimensional barcodes, symbols or indicia, and the imaging front end 604 is locatedbeneath that area of the window 603. Optionally, the location of thisdesignated region of the window 603 may be denoted using any suitablemarkings including, for example, outlining the boundary of thedesignated region on the window 603, using an arrow pointing to thedesignated region, or using an appropriate text message.

[0085] Limiting the systems image-capturing capabilities to a designatedregion of the window 603 can result in significant cost savings, becauseproviding imaging over the entire window 603 with sufficient resolutionto obtain useful images would require an imaging sensor with a verylarge number of pixels. Such sensors are generally much more expensivethan smaller imaging sensors.

[0086] Operators may be trained to recognize labels bearingtwo-dimensional bar codes, symbols or indicia, and to place such labelsabove and relatively close to, or touching, the special area of thewindow 603, so as to allow the imaging front end 604 to read thetwo-dimensional bar code, symbol or indicia. Such labels are preferablypresented very close to the imaging front end 604, such as by placingthem on the window 603, because the imaging device of the imaging frontend 604 would ordinarily have a limited depth of field. However,one-dimensional bar codes, symbols or other indicia may still bepresented to the flying spot front end 605 anyplace over its typicallymuch larger depth of field.

[0087] Optionally, imaging may be provided at two or more special areasof the windows 603 (e.g., at each of the four corners of the imagingwindow 603). In yet another alternative embodiment, instead of providingmultiple non-contiguous imaging areas on the window 603, multipleimaging sensors may be configured to provide images of two or morecontiguous areas. In embodiments that use more than one window 603 andmore than one image sensor, the imaging sensors may optionally bearranged behind different windows. When more than one imaging sensor isused, the sensors may be configured to have fields of view that arelimited to designated regions of the window. In such cases, thedesignated regions may be marked as described above in connection withthe single-window embodiments. When more than one imaging sensor isused, a single signal processor may be used to process the image datafrom all of the sensors. Alternatively, a duplicate copy of the signalprocessing hardware may be provided for each sensor.

[0088] In a variation of the above embodiment, when the control system606 (including a decoder internal thereto) decodes a one-dimensional barcode or symbol that is part of a linked or composite code, or thecontrol system 606 recognizes data from a linear scan by the flying spotfront end 605 indicating that a two-dimensional bar code, symbol orindicia is present, the control system 606 causes a signal to beconveyed to the operator, such as by sounding an audible beep or byilluminating a light-emitting diode (LED) located externally in avisible part of the system enclosure 602. Such a signal indicates to theoperator that the label should be positioned near or on top of thespecial area of the window 603, so that the imaging front end 604 canattempt to read a two-dimensional bar code, symbol or other indicia.

[0089]FIG. 9 is a diagram of an integrated optical reader 621 similar tothe integrated optical reader 601 shown in FIG. 8, but having anadditional flying spot laser scanning front end 631 for multi-planarscanning. Thus, like the integrated optical reader 601 shown in FIG. 8,the integrated optical reader 621 of FIG. 9 includes a system enclosure622 having a window (or aperture) 623, through which a flying spot frontend 625 and an imaging front end 624 may gather data. The systemenclosure 622 also has an upper part having a window (or aperture) 632generally perpendicular to the plane of the window 623. The secondflying spot front end 631 is positioned so as to scan through the window632 in the upper part of the system enclosure 622, and is connected tothe controller 626. In operation, similar to the embodiment of FIG. 8,the data gathered by the flying spot front end 631 may be decodedlocally therein, or may be sent to the controller 626 for decoding, or,alternatively, may be sent to a host computer (not shown) via aninterface 627 for decoding.

[0090] While the embodiment illustrated in FIG. 9 depicts the imagingfront end 624 as being located behind the horizontal window 623, theimaging front end in alternative embodiments 624 may look out throughthe vertical window 632 instead. Optionally, imaging may be implementedthrough both windows 623, 624 by providing suitable hardware behind eachof those windows. In other alternative embodiments, the second field ofview may be provided from another angle (e.g., from above). In stillother alternative embodiments, more than two fields of view may beprovided. For example, a field of view may be provided from below, fromone or more sides, and from above. Optionally, any of these fields ofview may be implemented using a flying-spot front end and/or an imagingfront end. In such embodiments, the field of view for imaging mayoptionally be limited to a subregion of the relevant windows, which mayoptionally be marked as described above.

[0091] In some instances, it may be desirable to have the field of viewof the imaging front end located in the center of the window 603 (FIG.8) or 623 (FIG. 9). However, where the flying spot front end uses afacet wheel to generate a scanning pattern, there may be little room foran imaging device. In one embodiment, the imaging device (e.g., CCD orCMOS imager) and lens for the imaging front end are suspended above thefacet wheel but underneath the window 603 (or 623), using a cantileverarm to hold the lens and imaging device. A wire may be run along thecantilever arm to allow electronic signals from the imaging device toreach signal processing electronics and, eventually, an image capturememory and/or decoder. Appropriate markings may optionally be providedto denote the field of view of the imaging device.

[0092] In various embodiments as described herein, components are sharedbetween the imaging front end and the flying spot front end, so as toreduce the number of total components needed and thereby reduce cost,size and/or power consumption. An example of such an embodiment isdescribed later herein with respect to FIG. 11. If, however, the laserutilized by the flying spot front end 605 (in FIG. 8) or 625 (in FIG. 9)is retrodirective, then challenges may be presented in sharingcomponents between the flying spot front end and the imaging front end.

[0093]FIG. 10 illustrates a facet wheel 641 with a hole 643 for allowingan imaging device 642 located beneath the facet wheel 641 to gather dataperiodically. Generally, when the facet wheel 641 spins, a flying spotscanning pattern is generated according to techniques well known in theart. However, when the hole 643 passes above the imaging device 642, theimaging device 642 is provided an unobstructed view above it, andcaptures data during that time. The facet wheel 641 may be temporarilystopped to allow the imaging device 642 to gather data over a longerexposure time.

[0094] In another embodiment, a shared imaging device (preferably atwo-dimensional active pixel CMOS array) is used for both flying spotscanning and imaging. When capture of a two-dimensional image isdesired, the facet wheel is stopped in an orientation such that a viewis provided down the centerpath of the integrated optical reader. Thecaptured image can then be transferred from the imaging device to amemory and/or decoder. When flying spot reading is desired, the facetwheel is rotated. A selected group of pixels on the imaging device (suchas a 40×40 area of pixels) is preferably used as a readout area to“emulate” a photodiode in the flying spot scanner—that is, to gatherlight reflected from the target and focused by the optical system ontothe imaging device, and provide a signal to processing and decodingparts of the system downstream. The data from the readout area of theimaging device is read out periodically, at a rate dependent in partupon the speed with which the beam is swept and the desired resolution,so as to yield a stair-step analog (video) signal, having signalfeatures (i.e., peaks and valleys) corresponding to the lighter anddarker features of the target. Using an active pixel CMOS array allowsselection only of the pixels in the readout area for each read, avoidingthe need to read out the entire contents of the imaging device, andpermitting a higher readout rate.

[0095] Preferably, the number of pixels selected for the readout area ofthe imaging device approximates the size and/or light sensitivity of aphotodiode. As with a photodiode in a flying spot scanner, the size ofthe image (that is, spot) on the imaging device will vary depending uponhow distant the target is. Thus, when the object is far away, the sizeof the spot will be relatively small, and when the object is close, thesize of the spot will be relatively large. The area of the imaging pixelselected for use as the readout area for flying spot scanning thusdepends upon the expected size of the spot over the operable range ofthe optical reader.

[0096] In a variation of the above embodiment, a proximity detector orranging device is used to optimize the readout area of the imagingdevice. When the proximity detector indicates that the target is close,the spot would be expected to be large, and so a larger area of pixelswould be read out. Conversely, when the proximity detector indicatesthat the target is distant, the spot would be expected to be small, andso a smaller area of pixels would be read out. The size of the readoutarea can be varied dynamically from close to distant targets, in directproportion to the target distance. A proximity detector of the typedisclosed in U.S. patent application Ser. No. 09/422,619, previouslyincorporated herein by reference, may be used in the aforementionedembodiment.

[0097]FIG. 11 is a diagram of an integrated optical reader 650 as may beparticularly well suited for a handheld optical reading device. As shownin FIG. 11, an integrated optical reader 650 comprises a lens 651 forfocusing light from a target (not shown) onto an image sensor 652. Theimage sensor 652 may comprise any of the imaging devices previouslymentioned herein, such as a CCD or CMOS array, for example. Preferably,for reasons explained below, the image sensor 652 comprises atwo-dimensional active-pixel CMOS array.

[0098] The sensor array 652 is connected to a signal processor 653,which may comprise an amplifier 655 (with or without automatic gaincontrol circuitry), a filter circuit 656, an A/D converter 657 and anedge detection circuit 658. The A/D converter 657 may be connected to amemory 670 for storing captured images (as well as for storing programvariables, data and the like), and the edge detection circuit 658 may beconnected to a buffer 671. Both the memory 670 and the buffer 671 areaccessible to a decoder 672 (or a controller). The decoder 672preferably comprises a microprocessor or microcontroller and programcode for causing the microprocessor or micro-controller to performcertain functions in accordance with the description herein.

[0099] A readout control circuit 661 is connected to the image sensor652. The readout control 661 may comprise, for example, clockingcircuitry to read out the pixels of the imaging array 652 sequentially,or in a particular pattern, in addition to logic circuitry forresponding to commands from the mode controller 663. The readout control661 may also comprise adaptive exposure control circuitry, such asdescribed in relation to an active-pixel CMOS image sensor in copendingU.S. patent application Ser. No. 08/697,408, previously incorporated byreference herein.

[0100] In operation, the image sensor 652 is exposed for an amount oftime (either a fixed or adaptive time period), and the image captured bythe image sensor 652 is clocked out under control of the readout controlcircuit 661. The image sensor output signal 654 is provided to thesignal processor 653, which amplifies and filters the signal, and theneither digitizes the signal using A/D converter 657 (if in imaging mode)or else detects transitions in the signal using edge detection circuitry658 (if in flying-spot scanning mode). The operation of the signalprocessor 653 is dictated by the mode controller 663, which indicates tothe various circuitry of the optical reader 650 whether the opticalreader 650 is in an imaging mode or a flying spot scanning mode. Lasercontrol circuitry 660 (including a beam former and other such circuitryas described in relation to elements 131 through 133 in FIG. 1) ispreferably included to permit flying-spot laser scanning capability.

[0101] If in imaging mode, the digitized data from A/D converter 657 istransferred to a data structure in memory 670 for storing the imagedata, for subsequent processing by the decoder 672. If in flying spotscanning mode, the edge detection data from edge detection circuitry 658is preferably run-length encoded and transferred to buffer 671, forsubsequent processing by the decoder 672.

[0102] The mode of the integrated optical reader 650 may be manuallyselected using a switch or other manual selection means as previouslydescribed herein. Alternatively, the mode controller 663 may beconnected to a range detector 662, which detects the proximity of thetarget and indicates such to the mode controller 663. If the target isnear, the mode controller 663 may select the imaging mode, whereas ifthe target is not near, the mode controller may select the flying spotscanning mode. The range detector 662 may share certain circuitry withthe image sensor 652 and signal processor 653 (in order to obtainranging information), and therefore is shown optionally connected to thesignal processor 653. Alternatively, the range detector 662 may bestand-alone in nature.

[0103] If in imaging mode, the image data from the image sensor 652 isclocked out and processed much in the same manner as with the imagingfront end 200 shown in FIG. 1. If, however, the integrated opticalreader 650 is in flying spot scanning mode, then certain modificationsare made, so as to permit the laser scanning circuitry to share some ofthe components with the imaging circuitry. In particular, as describedwith respect to the device shown in FIG. 10, a selected group of pixelson the imaging sensor 652 (e.g., a 40×40 area of pixels) is preferablyused as a readout area to “emulate” a photodiode in the flying spotscanner. The data from the readout area of the imaging sensor 652 isread out periodically, at a rate dependent in part upon the speed withwhich the beam generated by the laser control 660 is swept and upon thedesired resolution. The image sensor output signal 654 thereby comprisesa stair-step analog (video) signal, having signal features (i.e., peaksand valleys) corresponding to the lighter and darker features of thetarget.

[0104] Using an active pixel CMOS array for the image sensor 652 allowsselection only of the pixels in the readout area for each read, avoidingthe need to read out the entire contents of the imaging device, andpermitting a higher readout rate. Preferably, as noted with respect tocertain embodiments relative to FIG. 10, the number of pixels selectedfor the readout area of the imaging sensor 652 approximates the sizeand/or light sensitivity of a photodiode, and depends in part upon theexpected size of the spot over the operable range of the optical reader650 when used in flying-spot scanning mode.

[0105] In one variation of the above, the range detector 662 is used tooptimize the readout area of the imaging sensor 652. Suitable examplesof range detectors are described in U.S. patent application Ser. No.09/422,619, previously incorporated herein by reference. When the rangedetector 662 indicates that the target is close, the spot would beexpected to be large, and so a larger area of pixels would be read outfrom the imaging sensor 652. Conversely, when the range detector 662indicates that the target is distant, the spot would be expected to besmall, and so a smaller area of pixels would be read out. The size ofthe readout area can be varied dynamically from close to distanttargets, in direct proportion to the target distance.

[0106] Integrated optical readers in accordance with various preferredembodiments described herein advantageously enable a user to read nearbarcodes, symbols, or other indicia using an imaging technique, withoutsacrificing the ability to read distant barcodes, symbols, or otherindicia (which can be read using a flying-spot scan). In addition,because the imaging front-end 200 (or 800) can be used to read nearbarcodes, symbols, or other indicia, the design of the flying-spotfront-end does not need to accommodate near barcodes, symbols, or otherindicia. As a result, the flying-spot front-end 100 (or 700) can beoptimized for a larger depth of field when reading distant barcodes andother symbols and indicia. The integrated optical reader in accordancewith the preferred embodiments described herein also enables the user toread two-dimensional barcodes using imaging, and one-dimensionalbarcodes using flying-spot scans.

[0107] In various embodiments of an integrated optical reader asdescribed herein, an auto-focus capability may be provided. Typically,in such embodiments, a component in the optical path is adjusted inresponse to an indication of the distance to the target as derived bythe optical reader. Such an adjustable component may comprise, forexample, a lens or a mirror in the optical path. A proximity detector,including any of the types previously described or referred to herein,or any other suitable proximity detector or ranging mechanism asconventionally known, may be used to sense the distance to the targetand adjust the focus of the integrated optical reader in responsethereto. Alternatively, the focus of the integrated optical reader maybe adjusted to optimize for high frequency information in response toanalysis of the image data, according to any of a variety of techniquesthat are well known in the art.

[0108] In various embodiments as described herein, a multi-focal lensmay be used. In particular, a multi-focal lens may be used to increasethe depth of field of the optical system, particularly for the imagingfront end 200. A variety of multi-focal lenses and other opticaltechniques which may be utilized in conjunction with the embodimentsdescribed herein are set forth in U.S. Pat. Nos. 5,770,847 and5,814,803, each of which is hereby incorporated by reference as if setforth fully herein.

[0109] Optionally, Scheimpflug optics may used in any of the imagingapplications described above to provide increased depth of field. Theuse of Scheimpflug optics in imaging systems is described in U.S. patentapplication Ser. No. 09/884,975 (filed Jun. 21, 2001), which isincorporated herein by reference. Using Scheimpflug optics for theimaging front end is particularly advantageous when reading linear barcodes (e.g., UPC, code 39, etc.), but may also be appropriate in certaincircumstances for stacked bar codes (e.g., Maxicode). The use ofScheimpflug optics is particularly advantageous when an imaging frontend is located at a significant distance from the symbol being read. Forexample, an imaging device that uses Scheimpflug optics may beincorporated into a ceiling mounted device in a supermarket setting,aimed down at the checkout counter.

[0110] In the various embodiments as described herein, the type of datathat may be read and captured by the image front end of an integratedoptical reader is not limited to bar codes and similar symbols. Any typeof data or image may be captured by the image front end, including anytype of symbols, characters, or pictures (e.g., driver's licensephotos). Where such data is amenable to decoding, the controller of theintegrated optical reader may attempt to decode it; alternatively, thedata may be passed along to a host system, or stored locally for laterread-out. When character data is captured, conventional OCR (opticalcharacter recognition) techniques may be used to discern whichcharacters have been imaged, either locally in the controller or in aremote host system.

[0111] The imaging system in the embodiments described above may also beuse to capture biometrics information such as fingerprints, signatures,or handprints. For example, the imaging front end may be used to read afingerprint in response to an operator placing their finger on theimaging area of the window. The imaging front could then capture animage of the operator's fingerprint, which could then be compared toother fingerprints in a local library. Alternatively, the image of thefingerprint may be exported to an external device for processing. Incases where the imaging window is sufficiently large, an image of theentire handprint of the operator may be captured and analyzed (e.g., bycomparing its gross anatomic features to other handprints, eitherlocally or in a remote processor).

[0112] Although the present invention has been described above in thecontext of certain preferred embodiments, it is to be understood thatvarious modifications may be made to those embodiments, and variousequivalents may be substituted, without departing from the spirit orscope of the invention.

What is claimed is:
 1. An integrated optical reader, comprising: ahousing having a window; an imaging subsystem, said imaging subsystemcomprising an imaging sensor aimable at targets positioned in front of adesignated region of the window, but not in front of non-designatedregions of the window; a flying-spot laser scanner subsystem having afield of view that reads bar code symbols positioned in front of atleast some of the non-designated regions of the window, wherein area ofthe non-designated regions is at least four times as large as area ofthe designated region.
 2. An integrated optical reader according toclaim 1, wherein the imaging subsystem decodes bar code symbols.
 3. Anintegrated optical reader according to claim 1, wherein the imagingsubsystem decodes two-dimensional bar code symbols.
 4. An integratedoptical reader according to 1, wherein the flying-spot scanner subsystemdecodes bar code symbols.
 5. The integrated optical reader according to1, wherein the flying-spot scanner subsystem decodes one-dimensional barcode symbols.
 6. An integrated optical reader according to 1, whereinthe imaging subsystem processes at least one of a signature, afingerprint, and a handprint.
 7. An integrated optical reader accordingto 1, wherein the imaging subsystem processes text using opticalcharacter recognition techniques.
 8. An integrated optical readeraccording to 1, wherein the location of the designated region is denotedusing a suitable marking, and the area of the non-designated regions isat least ten times as large as the area of the designated region.
 9. Anintegrated optical reader according to 8, wherein the designated regionis located at the center of the window.
 10. An integrated optical readeraccording to 8, wherein the designated region is located at a corner ofthe window.
 11. An integrated optical reader according to 10, whereinthe imaging subsystem decodes bar code symbols.
 12. An integratedoptical reader according to 10, wherein the imaging subsystem decodestwo-dimensional bar code symbols.
 13. An integrated optical readeraccording to 10, wherein the imaging subsystem processes at least one ofa signature, a fingerprint, and a handprint.
 14. An integrated opticalreader according to 10, wherein the imaging subsystem processes textusing optical character recognition techniques.
 15. An integratedoptical reader according to 8, wherein the designated region consists ofa plurality of non-contiguous regions, at least one of which is locatedat a corner of the window.
 16. An optical reader comprising: a housinghaving a window; an imaging subsystem, said imaging subsystem comprisinga two-dimensional image sensor for detecting an image and an imagesensor interface for generating image data based on the detected image,wherein the image sensor is aimable at targets positioned in front of adesignated region of the window, but not in front of non-designatedregions of the window; a first decoder for decoding the image data todetermine the value of barcodes positioned in front of the designatedregion; a flying-spot barcode reading subsystem including a beam-formerfor scanning a spot of light across a target barcode, a photodetectorfor detecting light reflected by the target barcode and generates anoutput based on the detected light, and a signal processor forgenerating digital data based on the photodetector output, wherein theflying-spot laser scanner subsystem has a field of view that reads barcode symbols positioned in front of at least some of the non-designatedregions of the window; and a second decoder for processing the digitaldata to determine the value of barcode symbols that have been read bythe flying-spot barcode reading subsystem, wherein the location of thedesignated region is denoted using a suitable marking.
 17. An opticalreader according to 16, wherein the imaging subsystem processes at leastone of a signature, a fingerprint, and a handprint.
 18. An opticalreader according to 16, wherein the imaging subsystem processes textusing optical character recognition techniques.
 19. An optical readeraccording to 16, wherein the designated region is located at the centerof the window.
 20. An optical reader according to 16, wherein thedesignated region is located at a corner of the window.
 21. An opticalreader according to 16, wherein the designated region consists of aplurality of non-contiguous regions, at least one of which is located ata corner of the window.
 22. An optical reader according to 16, whereinthe first decoder and the second decoder are both implemented in asingle microprocessor or microcontroller.
 23. An optical reader,comprising: a housing having a first window and a second window; animaging subsystem having an imaging sensor aimable at targets positionedin front of the first window; a flying-spot laser scanner subsystemconfigured to read bar code symbols positioned in front of the firstwindow as well as bar code symbols positioned in front of the secondwindow.
 24. An optical reader according to 23, wherein the imagingsensor is aimable at targets positioned in front of a designated regionof the first window, but not in front of non-designated regions of thefirst window, and wherein the flying-spot laser scanner subsystem isconfigured to read bar code-symbols positioned in front of at least someof the non-designated regions.
 25. An optical reader according to 24,wherein the location of the designated region is denoted using asuitable marking, and the area of the non-designated regions is at leastten times as large as the area of the designated region.
 26. An opticalreader according to 23, wherein the designated region of the firstwindow is located at the center of the first window.
 27. An opticalreader according to 23, wherein the designated region of the firstwindow is located at a corner of the first window.
 28. An optical readeraccording to 23, wherein the imaging subsystem decodes bar code symbols.29. An optical reader according to 23, wherein the imaging subsystemdecodes two-dimensional bar code symbols.
 30. An optical readeraccording to 23, wherein the imaging subsystem processes at least one ofa signature, a fingerprint, and a handprint.
 31. An optical readeraccording to 23, wherein the imaging subsystem processes text usingoptical character recognition techniques.
 32. An optical readeraccording to 23, wherein the designated region of the first windowconsists of a plurality of non-contiguous regions, at least one of whichis located at a corner of the first window.